package jms.mq;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.logging.Logger;

/**
 * 消息处理中心
 */
public class Broker {
     private static final Logger logger = Logger.getGlobal();

    // 队列存储消息的最大数量
    private final static int MAX_SIZE = 3;

    // 保存消息数据的容器
    private static ArrayBlockingQueue<String> messageQueue = new ArrayBlockingQueue<String>(MAX_SIZE);

    // 生成消息
    public static void produce(String msg) {
        if (messageQueue.offer(msg)) {
            logger.info(String.format("成功向消息处理中心投递消息: %s , 当前暂存的消息数量是: %d", msg, messageQueue.size()));
        } else {
            logger.info("消息处理中心内暂存的消息到达最大负荷, 不能继续放入消息");
        }
        logger.info("============================");
    }
    // 消费消息
    public static String consume() {
        String msg = messageQueue.poll();
        if (msg != null) {
            // 消费条件满足时, 从容器中取出一条消息
            logger.info(String.format(" 已经消费消息: %s , 当前暂存额消息数量是: %d ", msg, messageQueue.size()));
        } else {
            logger.info("消息处理中心没有消息可供消费");
        }
        logger.info("============================");

        return msg;

    }

    public static void main(String[] args) {
        System.out.println(String.format("字符串: %s, 数字: %d", "ok", 10));
    }
}
